Methods, systems, and media for causing an alert to be presented

ABSTRACT

Systems and methods for customizing video include providing a portion of video to an electronic display and identifying a character or personality in the portion of video. A request to perform an action regarding the portion of video may be detected and the action may be associated with the identified character or personality. The action may be performed on a second portion of video in response to the character or personality being identified in the second portion of video.

CROSS REFERENCE TO RELATED APPLICATIONS

This application is a continuation of U.S. patent application Ser. No.13/563,523, filed Jul. 31, 2012, which is hereby incorporated byreference herein in its entirety.

BACKGROUND

The present disclosure relates generally to providing video to anelectronic display. The present disclosure more specifically relates tocustomizing the video based on a recognized character or personality inthe video.

A video may be available in any number of different formats. Forexample, a video may be available via a television channel, as a videostream, as an Internet download, or on a storage medium (e.g., a DVD, aBlu-Ray disc, a VHS tape, etc.). Different devices may be used topresent the video on a display, depending on the format of the video.For example, a computer may present a streamed video on a display and aDVD player may present a DVD movie to a television set.

In many cases, a video may be presented to a viewer in atake-it-or-leave-it manner. For example, a viewer of a televisionprogram may have the option of changing the channel or turning off thetelevision, but have no control over the actual content of thetelevision program itself. Similarly, a viewer of a DVD movie may havethe option of skipping the current scene or fast-forward through thescene, but have no control over the scene itself.

SUMMARY

Implementations of the systems and methods for customizing video aredisclosed. One implementation is a method for customizing video thatincludes providing, by a processing circuit, a portion of video to anelectronic display. The method also includes identifying, by theprocessing circuit, a character or personality in the portion of video.The method further includes detecting, by the processing circuit, arequest to perform an action regarding the portion of video. The methodyet further includes associating, by the processing circuit, theidentified character or personality in the portion of video with theaction based in part on the detected request. The method additionallyincludes identifying, by the processing circuit, the character orpersonality in a second portion of video. The method also includesperforming the action regarding the second portion of video in responseto identifying the character or personality in the second portion ofvideo.

Another implementation is a system for customizing video. The systemincludes a processing circuit operable to provide a portion of video toan electronic display and to identify a character or personality in theportion of video. The processing circuit is also operable to detect arequest to perform an action regarding the portion of video and toassociate the identified character or personality in the portion ofvideo with the action based in part on the detected request. Theprocessing circuit is further operable to identify the character orpersonality in a second portion of video and to perform the actionregarding the second portion of video in response to identifying thecharacter or personality in the second portion of video.

A further implementation is a computer-readable storage medium havinginstructions therein, the instructions being executable by one or moreprocessors to perform operations. The operations include providing aportion of video to an electronic display and identifying a character orpersonality in the portion of video. The operations also includedetecting a request to perform an action regarding the portion of videoand associating the identified character or personality in the portionof video with the action based in part on the detected request. Theoperations further include identifying the character or personality in asecond portion of video and performing the action regarding the secondportion of video in response to identifying the character or personalityin the second portion of video.

These implementations are mentioned not to limit or define the scope ofthis disclosure, but to provide examples of implementations to aid inunderstanding thereof. Particular implementations can be developed torealize one or more of the following advantages.

BRIEF DESCRIPTION OF THE DRAWINGS

The details of one or more implementations are set forth in theaccompanying drawings and the description below. Other features,aspects, and advantages of the disclosure will become apparent from thedescription, the drawings, and the claims.

FIG. 1 is an example illustration of a video being provided to anelectronic display;

FIG. 2 is an example illustration of a preferences screen for a videocustomization service;

FIG. 3 is an example illustration of an alert being provided to anelectronic display;

FIG. 4 is a flow diagram of a process for customizing video, accordingto various implementations;

FIG. 5 is a flow diagram of a process for automatically identifyingpreferences in a video customization service, according to variousimplementations;

FIG. 6 is a flow diagram of a process for providing an alert, accordingto various implementations; and

FIG. 7 is a block diagram of a processing circuit configured tocustomize video, according to various implementations.

DETAILED DESCRIPTION

According to some aspects of the present disclosure, a videocustomization service may be configured to customize how video ispresented to a viewer. Generally, a viewer may have differentdispositions towards the characters or personalities in a video. Forexample, a viewer may like a particular movie, but absolutely hate aparticular character in it. In such a case, the view's overallimpression of the video may be diminished because of the hatedcharacter. Conversely, a viewer may have a negative impression of atelevision show, but love a particular character. In variousimplementations, a video customization service may be used to emphasizecertain portions of a video and deemphasize other portions based onwhether a portion contains a loved or hated character or personality.

In various implementations, a video customization service may use imagerecognition to detect the presence of a character or personality withina video. In general, a personality may be any being that exists in thereal world (e.g., actor, celebrity, person, animal, etc.). In contrast,a character may be any being that exists within a video. A character mayor may not have a corresponding personality. For example, a charactermay be played by an actor or may be artificially created (e.g., acartoon character, an animated character, etc.). Based in part on aviewer's preferences regarding the character or personality, the videocustomization service may alter how the video is presented to theviewer. For example, the video customization service may skip overportions of the video that contain the character or personality, skip toportions of the video that contain the character or personality, fastforward through scenes that contain the character or personality, mutethe audio associated with the character or personality, or perform othersuch actions.

A viewer's preferences regarding a particular character or personalitymay be specified manually or detected automatically by the videocustomization service. For example, a viewer may manually select how thevideo customization service is to handle the detection of the characteror personality. In some implementations, the video customization servicemay analyze how the viewer interacts with video containing the characteror personality. Based on the analysis, the video customization servicemay identify one or more actions to be performed when the character orpersonality is detected in a video. An identified action may then beprovided by the video customization service to the viewer as a suggestedpreference regarding the character or personality. In other cases, thevideo customization service may use the identified actions to setpreferences for the viewer automatically (e.g., without receiving afurther request from the viewer to do so).

In some implementations, the video customization service may monitor oranalyze video from an undisplayed source to identify a particularcharacter or personality. For example, the video customization servicemay monitor television channels or streamed video channels that are notcurrently being provided to a display, to identify a particularcharacter or personality. Based on a user's preferences, the videocustomization service may provide an alert to the user that thecharacter or personality is being shown in an undisplayed portion ofvideo (e.g., video on an undisplayed channel, another scene in a playingmovie, etc.). For example, the video customization service may providean on-screen alert, an audio alert, an alert to a mobile device of theuser, or other such alert, to notify the user when a particularcharacter or personality is featured in an available video.

Referring now to FIG. 1, an example illustration of a video beingprovided to an electronic display 100 is shown, according to variousimplementations. Electronic display 100 may be in communication with oneor more processors of a video customization service that provide videodata to electronic display 100. According to various implementations,electronic display 100 may share the same housing as the one or moreprocessors. For example, electronic display 100 may be a display of alaptop computer, a mobile device, or a “smart” television (e.g., atelevision that incorporates features of a computer, such as anoperating system). In other implementations, electronic display 100 mayreceive the video data from a separate device in electroniccommunication with electronic display 100. For example, electronicdisplay 100 may be a television set or monitor in communication with acomputer, media player, gaming console, set-top box, or similarelectronic device configured to provide video data to electronic display100.

As shown, a video 102 may be provided to electronic display 100 anddisplayed. In some implementations, video 102 may be a pre-stored video.For example, video 102 may be stored on a DVD disc, a Blu-Ray disc, ahard drive, a flash drive, or another electronic storage medium. Infurther implementations, video 102 may be received from a remote source.For example, video 102 may be received via a video stream, a televisionchannel, a cable channel, a satellite channel, or a similar source. Ineither case, some or all of video 102 may be buffered prior topresentation on electronic display 100. In other words, a portion ofvideo 102 may be downloaded and stored in a buffer memory prior to beingpresented on electronic display 100.

Various user controls may be associated with video 102. In someimplementations, some or all of the controls associated with video 102may be presented on electronic display 100, such as icons 104-108. Icons104-108 may be selected by a viewer via operation of an interfacedevice, such as a keyboard, mouse, remote control, or other pointingdevice. For example, video 102 may be paused via selection of icon 108or stopped via selection of icon 106. Similarly, video 102 may bestarted or resumed via selection of icon 104. In other implementations,some or all of the functions of icons 104-108 may be integrated into aninterface device. For example, a remote control may have specificbuttons to pause, play, and stop video 102. Other exemplary usercontrols may be used to request that an action be performed, such aschanging a channel, changing a video source (e.g., to change from atelevision channel to a DVD player), returning to a title menu,adjusting or muting the volume of video 102, specifying a languagesetting, viewing the remaining time of video 102, displaying a channelguide, displaying information regarding video 102 (e.g., its title,year, etc.), skipping to another scene, fast forwarding video 102,rewinding video 102, playing video 102 in slow motion, or performingother such functions.

Information regarding video 102 may be provided to electronic display100. In some cases, the current running time 110 and total running time112 of video 102 may be displayed on electronic display 100. Forexample, video 102 may be at current running time 45:21/1:39:31signifying that video 102 is at the forty five minute and twenty onesecond mark. Related information, such as the time remaining (e.g.,54:10) may also be provided to electronic display 100. Additionalinformation regarding video 102 may include, but is not limited to, thecurrent chapter, the current scene, the title of video 102, the yearvideo 102 was recorded, and one or more characters or personalities invideo 102.

According to various implementations, the video customization servicemay use image recognition on video 102 to identify one or morecharacters or personalities in video 102. In general, a personality maybe a real-world actor, celebrity, newscaster, or other being appearingin video 102 (e.g., a person, an animal, etc.). A character, incontrast, may be specific to video 102 or a set of related videos (e.g.,a set of movies, episodes of a television show, etc.) played by thepersonality (e.g., a part played by an actor). In some cases, video 102may include an artificially-generated character. For example, acharacter may be artificially created in video 102 using computergenerated imagery (CGI) technology. Thus, a character may or may nothave a corresponding personality in the real world, but still berecognizable by the customization service via image recognition.

Image recognition may be performed on the current image of video 102provided to electronic display 100 (e.g., as video 102 is being played).For example, assume that the current image of video 102 includes twocharacters: a first character 114 and a second character 116. In someimplementations, the video customization service may identify characters114, 116 by analyzing their respective facial regions 118, 120 (e.g.,using facial recognition). Similarly, facial regions 118, 120 may beanalyzed using image recognition to identify any real-worldpersonalities associated with characters 114, 116. For example, theactor playing character 114 may be identified by using facialrecognition on facial region 118 in video 102.

In further implementations, the video customization service may useimage recognition on images of videos that are not currently beingprovided to electronic display 100. For example, the video customizationservice may perform image analysis on an undisplayed channel or otherportions of video 102. In some implementations, portions of video 102may be stored in a buffer of the customization service and analyzedusing image recognition, prior to being provided to electronic display100. For example, image recognition may be performed on any number ofundisplayed scenes of video 102 (e.g., the next scene to be displayed ifvideo 102 is played normally, etc.) and/or ranges of play time of video102 (e.g., the next ten minutes of video 102, etc.).

Referring now to FIG. 2, an example illustration of a preferences screen200 for a video customization service is shown, according to variousimplementations. As shown, preferences screen 200 may be provided by thevideo customization service to an electronic display, such as electronicdisplay 100. In some implementations, preferences screen 200 may bepresented in response to receiving a request from a user interfacedevice, such as a remote control or a touch-screen display.

Preferences screen 200 may be associated with a particular characterand/or personality. In some implementations, the character and/orpersonality may be associated with a character or personality identifiedwithin a playing video. In the example shown, preferences screen 200 maybe associated with character 114 identified within video 102 in FIG. 1.For example, a user may operate a user interface device when video 102is being displayed to enter a preferences screen relating to character114. In other implementations, a user may first search for the characteror personality via the video customization service. For example, a usermay search for a particular title, release date, character's name,personality's name, studio, or genre via the video customizationservice. The user may then select one or more of the results to enterpreferences regarding a particular character or personality. In someimplementations, preferences screen 200 may be associated with a set ofdifferent characters or personalities. For example, preferences screen200 may be associated with a set of actors in a particular TV show ormovie.

Preferences screen 200 may include various indicia regarding itsassociated character, personality, or set of characters orpersonalities. As shown, preferences screen 200 may include a name 204of the associated character and/or a name 202 of the personality thatplays the character. For example, character 114 in video 102 may benamed “Sheriff Bob,” as indicated by name 204. Similarly, “Sheriff Bob”may be played by “John Doe,” as indicated by name 202 on preferencesscreen 200. In some implementations, preferences screen 200 may includeone or more images of its associated character or personality. Forexample, preferences screen 200 may include an image 230 of thecharacter, “Sheriff Bob.”

According to various implementations, preferences screen 200 may beconfigured to allow a user to set preferences in the video customizationservice for an associated character and/or personality. Preferences maybe set via preferences screen 200 for a particular user profile or aparticular device. For example, a user may log into his or her profileof the video customization service, to access preferences screen 200. Inanother example, preferences screen 200 may be used to set preferencesfor a particular device, such as a television set or set-top box. Thepreferences set via preferences screen 200 may be applied to a characterand personality individually or collectively, in variousimplementations. For example, preferences screen 200 may allow differentpreferences to be set for the character Sheriff Bob than for John Doe,the personality that plays Sheriff Bob.

Preferences for the video customization service may be set onpreferences screen 200 via selection of inputs 206-228. Inputs 206-228may include radial buttons, check boxes, text fields, buttons, or anyother form of graphical input mechanism. Preferences set via inputs206-228 may be used by the video customization service to control howvideo containing the character or personality is presented. Thus,preferences screen 200 may be used to control how the service customizesvideo to be presented to an electronic display. In general, the videocustomization service may use image recognition to determine whether thecharacter or personality associated with preferences screen 200 ispresent in a portion of a video. If the character or personality ispresent, the video customization service may perform a customizationaction specified via inputs 206-228.

In some cases, customization actions performed by the videocustomization service may be mutually-exclusive. In such cases,selection of some or all of inputs 206-228 may also bemutually-exclusive. For example, only one of inputs 206-214 may beselected regarding the personality, John Doe, if their associatedactions are mutually-exclusive (e.g., selection of input 206 may causeinput 208 to be unselected).

Input 206 may be configured to control whether the video customizationservice is to skip scenes that contain the personality. For example, auser may select input 206 if he or she never wishes to see thepersonality John Doe. Similarly, input 216 may be configured to controlwhether the video customization service is to skip scenes that containthe personality, Sheriff Bob. For example, a user may have a positive orneutral impression of John Doe, but absolutely hate the character,Sheriff Bob. In various implementations, the video customization servicemay use image recognition on a buffered portion of a video to determinewhether the portion contains the character or actor. If so, the bufferedportion of the video may be skipped (e.g., not provided to an electronicdisplay), if either of inputs 206, 216 is selected.

Input 208 may be configured to control whether the video customizationservice is to mute dialog for the personality associated withpreferences screen 200 (e.g., video containing the personality may stillbe presented to an electronic display, but its audio may be muted).Similarly, input 218 may be configured to control whether thecharacter's dialog is to be muted. In some implementations, the videocustomization service may mute the audio of any portion of a video inwhich the personality or character is identified. For example, the videocustomization service may mute any scenes that contain John Doe orSheriff Bob, respectively, if either of inputs 208, 218 are selected. Inother implementations, only audio for the particular character orpersonality may be muted. For example, a scene that includes Sheriff Boband Bad Guy Bill may only be muted by the video customization servicewhen Sheriff Bob speaks.

Inputs 210, 220 may be configured to control whether the videocustomization service is to fast forward through portions of a videothat contain the personality or character associated with preferencesscreen 200, respectively. In one example, assume that the videocustomization service buffers a portion of a video before providing theportion to an electronic display. The video customization service mayanalyze the buffered portion to detect the personality or character inthe portion of the video (e.g., using image recognition). If thepersonality or character is detected in the portion of the video, thevideo customization service may increase the playback speed of theportion of the video when the portion is provided to an electronicdisplay. In non-limiting examples, the video customization service maydouble or triple the playback speed of the portion of the videocontaining the personality or character. The video customization servicemay mute the corresponding audio of the fast-forwarded portion or mayalso speed up the corresponding audio while the portion is beingfast-forwarded.

Inputs 212, 222 may be configured to control whether the videocustomization service is to change the channel when the video from thecurrent channel contains the personality or character, respectively. Invarious implementations, a channel may be a broadcast televisionchannel, a cable television channel, a satellite television channel, ora streamed internet video channel. For example, the video customizationservice may receive a multiplexed video feed from a cable televisionprovider and provide one of the channels in the feed to an electronicdisplay. If the video customization service detects an image of thepersonality or character in the channel being provided to the display,the service may change the provided channel to another channel beingreceived by the service. For example, if input 212 is set and John Doeis detected in the video from Channel 45, the video customizationservice may begin providing Channel 46 to the electronic display,instead. In some implementations, the video customization service maychange the channel to a previously-visited channel, such as the lastvisited channel. In other implementations, preferences screen 200 oranother similar screen may be configured to allow a user to specify thenew channel (e.g., the channel to be monitored), if the personality orcharacter is detected. For example, preferences screen 200 may includeone or more inputs configured to allow a user to specify that the videocustomization service is to change the channel to a particular channel,if the personality or character is detected on the current channel.

Inputs 214, 224 may be configured to control whether the videocustomization service is to skip to the portions of a video that containthe personality or character, respectively. In some cases, a user maywish to emphasize portions of a video that contain the personality orcharacter. Similar to the other video customization options, the servicemay analyze a buffered portion of a video to detect the presence of thepersonality or character in the portion. If the personality or characteris detected in the portion of the video, the video customization servicemay provide the portion of the video to an electronic display normally.However, if the video customization service does not detect the presenceof the personality or character in the portion of the video, the servicemay not provide that portion to the electronic display. In someimplementations, the portion of the video may be only the images in thevideo that contain the personality or character. In otherimplementations, the portion of the video may be a pre-indexed portionof the video, such as a scene or chapter of a movie or recordedtelevision program (e.g., the scene may be played by the service, evenif the scene has images that do not contain the character orpersonality). In one example, assume that a user of preferences screen200 only wishes to watch scenes of a movie that include Sheriff Bob anduses input 224. In such a case, only scenes of the movie that includeSheriff Bob may be provided by the video customization service toelectronic display 100.

In some implementations, preferences screen 200 may include inputs 226,228 configured to control whether the video customization serviceprovides alerts when the personality or character is detected,respectively. In various implementations, the video customizationservice may perform image analysis on video from one or more undisplayedsources to detect the presence of the personality or character. Forexample, the video customization service may analyze a different channelnot currently being provided to the electronic display. If the characteror personality is detected in video on the other channel, the videocustomization service may provide an alert to the display. In someimplementations, preferences screen 200 or another similar screen may beconfigured to allow a user to specify the channel or channels to bemonitored. For example, a user may specify that they wish to monitorChannel 45 for appearances of Sheriff Bob.

According to some implementations, the video customization service mayutilize voice commands in addition to, or in lieu of, preferences screen200. For example, a user may issue a voice command to the videocustomization service, “Skip scenes with John Doe.” In response, thevideo customization service may set the corresponding preference, eitheron preferences screen 200 or off-screen.

Referring now to FIG. 3, an illustration of an alert being provided toan electronic display 100 is shown, according to variousimplementations. In the example shown, a user may currently be watchinga video 300. Video 300 may be provided to electronic display 100 via achannel, such as Channel 4 indicated by icon 302. For example, assumethat the channel is a television channel, such as an over-the-airbroadcast, cable, or satellite television channel.

In the example shown, assume that one or more preferences have been setfor the video customization service to monitor other channels for thepersonality, John Doe. For example, input 226 of preferences screen 200in FIG. 2 may be set by a user. In response, the video customizationservice may monitor one or more channels that are not being provided toelectronic display 100 (e.g., channels other than Channel 4). Forexample, the video customization service may perform image recognitionon the video on Channel 6 to detect the presence of John Doe. Inresponse to detecting John Doe in the video on the other channel, thevideo customization service may provide an alert 304 to electronicdisplay 100.

In some implementations, alert 304 may be selectable by a user interfacedevice. When alert 304 is selected by a user input device, the videocustomization service may switch from video 300 to the video availableon the corresponding channel. For example, selection of alert 304 maycause video 300 to be replaced on electronic display 100 with the videofrom “channel 6.”

In cases in which the video being played on electronic display 100 is arecorded video (e.g., a streamed video, a DVD, a video recorded by adigital video recorder, etc.), the video customization service may scann-number of minutes ahead of real-time (e.g., the current point in timeof the video being played) to detect the presence of the character orpersonality. If the personality or character is detected, the videocustomization service may generate an alert that indicates when thepersonality or character is to appear. For example, an alert mayindicate that Sheriff Bob is to appear in the video in five minutes. Insome implementations, the alert may include the ability to skip to theportion of the video that contains the personality or character. Forexample, the user may be presented with the option to skip five minutesahead to the portion of the video that contains Sheriff Bob. If therecorded video contains advertisements, the video customization servicemay be configured to skip the advertisements or not skip advertisements,according to various implementations.

The video customization service may be configured to provide a guide toelectronic display 100 that lists when each detected personality orcharacter appears in a video. For example, the guide may list thatSheriff Bob appears in scenes 3, 4, and 5 of the video and that Bad GuyBill appears in scenes 1, 2, and 5 of the video. Such a guide may beconfigured to allow a user to skip to the scenes or other portions ofthe video that contain the character or personality. In someimplementations, the guide may list the most frequently shown charactersor personalities in the video. For example, the guide may list the topfive most shown characters in the video and allow a user to skip tothose portions containing one of the characters. In otherimplementations, the guide may only display characters or personalitiesselected by a user of the video customization service.

Alerts generated by the video customization service may be of any numberof different types. Non-limiting examples of an alert that may begenerated include an audible sound (e.g., a beep, a voice notification,etc.) provided to a speaker, a pop-up alert provided to an electronicdisplay (e.g., alert 304, etc.), and an alert provided to a mobiledevice via a wireless connection (e.g., an email message, a textmessage, etc.). In some implementations, the type of alert may be set asa preference in the video customization service. For example, a user mayspecify that she wishes to receive text messages to her mobile phonewhenever a particular character or personality is detected.

According to various implementations, the video customization servicemay monitor a user's actions regarding a video to determine the user'sdisposition towards displayed characters or personalities. Based on theactions regarding the video, the video customization service may set oneor more preferences for the user. Actions may include, but are notlimited to, changing the current channel, muting the audio,fast-forwarding the video, rewinding the video, and stopping the video.The video customization service may associate the actions with adetected character or personality in the video and set a correspondingpreference for a user. For example, assume that the portion of video 300being displayed on electronic display 100 includes a character 306,Richard the Robot. The video customization service may analyze facialarea 308 in video 300 to identify character 306. If the user alwayschanges the channel when character 306 is displayed, the videocustomization service may set a preference to change the channelautomatically. In another example, the video customization service maydetermine that a user is fast-forwarding a video to watch a particularcharacter or personality. In such a case, the video customizationservice may set a preference for the user that emphasizes the characteror personality.

In some cases, the video customization service may use timinginformation to determine whether to set a user preference and whichpreference to set. Timing information may correspond to the amount oftime a user watches a video containing a particular character orpersonality. For example, a user that watches video containing character306 for one hour may like character 306 and the video customizationservice may set a preference that emphasizes character 306. Conversely,if the user quickly changes the channel showing character 306, the videocustomization service may set a preference to automatically change thechannel whenever character 306 is shown. The video customization servicemay place a greater weighting on actions performed in the middle of avideo than at the video's beginning or end. For example, a user mayfast-forward through the credits of a movie, without this action beingused by the video customization service to set preferences for the user.

In some implementations, the video customization service may ignorecertain time periods regarding a video or deemphasize theirsignificance. Generally, the amount of time that a user has watched aparticular video may be more or less significant, depending on thecircumstances. In some cases, the total amount of time that a user haswatched a video may be less significant after a threshold amount of timehas passed (e.g., when the user turns off the video, changes thechannel, etc., may be arbitrary after a certain amount of time haselapsed). For example, the video customization service may identify acharacter as being liked by a user, if the user watches a videocontaining the character for forty five minutes. Actions after thispoint in time may be less significant and may be ignored. In othercases, the contribution of watching the video after this point in timeto the overall determination of the user's disposition may decrease.

The video customization service may analyze user actions in relation toone another, to automatically set a user preference or suggest an actionpreference to a user. For example, assume that a user changes thechannel ten times within the span of forty five seconds. In such a case,the video customization service may ignore these actions, since the useris likely channel surfing. Conversely, actions that are intermittent andrelated to a particular character or actor may be used by the service toset a user parameter. For example, a preference may be set by the videocustomization service if a user tends to watch television shows for tenor more minutes each, but changes the channel whenever a particularcharacter is shown.

The video customization service may aggregate actions regarding acharacter or personality from multiple users or devices, to maintainpopularity ratings for the characters or personalities. Users may, inone implementation, consent to allowing the video customization serviceto aggregate data regarding the users' viewing habits. For example,character 306 may receive a low rating if users consistently change thechannel whenever character 306 is shown. In some implementations, apopularity rating may be associated with user information from theusers, if the users have consented to providing this information. Forexample, character 306 may be favorable to females between the ages of18-29, but disliked by males in the same age group. If a user is notlogged into a user profile, the video customization service may analyzethe viewing patterns of the user to estimate the user's characteristics.

In some implementations, the video customization service may providecertain user information and popularity ratings to an advertisingsystem. The advertising system may use the received data to select whencertain advertisements are to be presented to users. For example, anadvertiser wishing to reach females between the ages of 18-29 mayprovide an advertisement during video 300, if character 306 has a highpopularity rating among certain users. The video customization may alsodetermine which advertisements are watched to completion, whichcharacters or personalities are within the advertisements, and whichportions of the users responded positively to the advertisements.

Referring now to FIG. 4, a flow diagram of a process 400 for customizingvideo is shown, according to various implementations. Process 400 may beimplemented by a video customization service. Such a service may beprovided by one or more processing circuits configured to store andexecute machine instructions. For example, process 400 may beimplemented by a smart television, a set-top box for a television, avideo game console, an online server, a mobile device, combinationsthereof, or other forms of electronic devices configured to implement avideo customization service.

Process 400 includes receiving one or more preferences for a characteror personality. In general, a personality may be any person or animalthat exists in the real world. For example, a personality may be areal-world actor, celebrity, newscaster, athlete, etc. A character, incontrast, may be a character played by a personality or may be anartificially-created character within a video. A character in a videomay or may not appear the same as its corresponding personality. Forexample, a particular actor may wear a costume while appearing in thevideo.

A preference may control which action is performed by the videocustomization service when its corresponding character or personality isdetected in a video. In various implementations, a preference maycontrol whether the video customization service is to fast-forward thevideo, skip over a scene containing the character or personality, skipto the scene containing the character or personality, change the channelshowing the video, or mute the dialog of the video. A preference may beset globally (e.g., for all videos) or on a per-video basis (e.g., for aparticular movie, television show, video stream, etc.), in variousimplementations.

A preference may be associated with a particular user profile or device.For example, a user may create a profile with the video customizationservice and set one or more preferences. The user profile may beassociated with any number of electronic devices (e.g., the user'stelevision, set-top box, mobile device, etc.). If the user is loggedinto his or her profile in the device, the video customization servicemay use the preference to control which actions are performed regardingvideo. In other implementations, a preference may be associated directlywith an electronic device. For example, a preference may be set for asmart television having a video customization service and usedregardless of the person watching the television.

Process 400 includes identifying the character or personality in abuffered video (block 404). In various implementations, the videocustomization service may load a portion of a video into a buffer, priorto presenting the video to an electronic display. For example, the videocustomization service may load the next five minutes of a video into thebuffer, while the video is playing. The character or personality may beidentified in the portion of the video using image or facial recognitionon the images in the portion of the video. In some implementations, thevideo customization service may search a local or remote database ofimages to identify the character or personality. For example, theservice may compare an image in the video to an index of images ofcelebrities. In some implementations, a user may upload an image of aperson which may be used by the video customization service to identifythe person in the portion of the video.

In further implementations, a character or personality may be identifiedby comparing a time in the video to a database that cross-referencesplay times in a video and the characters or personalities that appear atthe various times in the video. For example, a pre-existing database mayinclude a listing of all playback times in a movie in which Sheriff Bobappears. Such a database may be queried and the current playback time ofthe movie compared to those in the database, to determine whether thecurrent scene contains Sheriff Bob.

Process 400 includes altering the buffered video in response todetecting the character or personality (block 406). If the character orpersonality is detected in the portion of the video, the videocustomization service may perform the action associated with thepreference for that character or personality. For example, the servicemay fast-forward the portion of the video, skip over the portion of thevideo, skip to the portion of the video, or mute audio for the portionof the video. In another example, the video customization service mayalter the buffered video by replacing the buffered video with video fromanother source, such as another channel (e.g., the video customizationservice may change the channel).

Process 400 includes providing the altered video (block 408). In someimplementations, the video customization service may provide the alteredvideo directly to an electronic display. For example, a smart televisionthat includes a video customization service may provide the alteredvideo to the display. In other implementations, the altered video may beprovided to another device having an electronic display. For example, ifthe video customization service resides on one or more remote servers,the altered video may be provided to a set-top box, mobile device, etc.,that presents the video an associated display.

Referring now to FIG. 5, a flow diagram of a process 500 for customizingvideo is shown, according to various implementations. Similar to process400, process 500 may be implemented by provided by one or moreprocessing circuits configured to store and execute machineinstructions. Process 500 may be implemented as part of the same videocustomization service that implements process 400 or another servicethat provides generated preferences to the video customization service.

Process 500 includes identifying a character or personality in a video(block 502). In various implementations, image or facial recognition maybe performed on a buffered portion of a video to identify a character orpersonality. For example, an image of a character or personality in abuffered portion of a video may be compared to a known image of thecharacter or personality. Other techniques that may be used to identifythe character or personality include voice recognition of words spokenby the character or personality in the video, and querying a databasecataloging when the character or personality appears within the video.

Process 500 includes monitoring interactions with the video (block 504).Interactions with the video may correspond to actions requested by auser while watching the video via an interface device. Such actions mayinclude, but are not limited to, playing the video, pausing the video,stopping the video, changing the channel, muting the audio of the video,fast-forwarding a portion of the video, rewinding a portion of thevideo, and skipping portions of the video. An action may be associatedwith the identified character or personality in the video. For example,a user may change the channel when a particular character is beingdisplayed. In some implementations, interactions with the video may bemonitored if a user has opted in to allowing the system to monitor hisor her actions. For example, a user may set a preference to turn on themonitoring feature, to have the system automatically identifypreferences for the user.

Data regarding an interaction with the video may also include timestampdata (e.g., data regarding when the interaction occurred). In otherwords, the data regarding an interaction may indicate how long the videowas played before the interaction occurred and at what point in thevideo the interaction occurred. For example, the data may indicate thata user changed the channel after watching a television program for fiveminutes.

Process 500 includes generating one or more preferences using the videointeraction data (block 506). A preference may be associated with theidentified character or personality and used by a video customizationservice to customize future videos for a user. In some implementations,the types of interactions and/or when the interactions occurred may beranked, to determine which preference is set. For example, assume that auser changed the channel twice when a particular character was displayedand muted the volume six times when the character was displayed. Anaction may receive a weighting based in part on the number of itsoccurrences regarding the identified character or personality. Theweighting may also be based in part on the type of action (e.g., certainactions may be weighted higher than others). In some cases, theweighting may be based in part on when the action occurred. For example,actions that occurred in the middle of a video may receive higherweightings than actions that occurred at the beginning or end of thevideo. A weighting may also be based in part on other related actions.For example, an channel-changing action regarding an identifiedpersonality or character may be ignored (e.g., receive a zeroweighting), if other channel-changing actions are also identified withina short period of time (e.g., the user is channel surfing). A parametercorresponding to the highest weighted action may then be generated forthe user's profile or device.

Process 500 includes using the one or more generated preferences toalter a video (block 508). In some implementations, a preference may begenerated by a video customization service configured to monitor videointeractions. In other implementations, a generated preference may beprovided to a video customization service. The video customizationservice may alter a portion of a video, such as a buffered portion of avideo, according to the generated preference. For example, a preferencemay be generated to fast-forward a portion of a video that includes theidentified character or personality. In such a case, the videocustomization service may increase the playback speed of a portion of avideo in which the character or personality is detected.

Referring now to FIG. 6, a flow diagram of a process 600 for providingan alert is shown, according to various implementations. In general,video from one or more sources may be analyzed to detect the presence ofa particular character or personality. For example, a videocustomization service may be configured to identify characters orpersonalities within videos from different sources (e.g., differentchannels, different video players, different network locations, etc.).If a specified character or personality is detected, the service mayprovide an alert to a user to notify the user that the character orpersonality is in an available video or will be available in an upcomingportion of a video.

Process 600 includes receiving one or more preferences associated with apersonality or character (block 602). The preferences may controlwhether the service is to monitor video for the personality orcharacter, which sources are to be monitored (e.g., a particularchannel, website, video player, etc), and the type of alert to begenerated. In various implementations, an alert may be provided in apop-up window or icon to an electronic display, as an audio alert to aspeaker, as an email or similar form of text-based message, orcombinations thereof. For example, a user may set a preference to beshown a popup message whenever a particular character is on an availablechannel.

Process 600 includes monitoring an undisplayed video (block 604). Anundisplayed video generally refers to any video or portion of a videothat is not currently being provided to an electronic display of a user.For example, an undisplayed video may be video from a different channelor device than the one being displayed. In another example, anundisplayed video may be a portion of a video that has not yet beenplayed (e.g., an upcoming scene of a movie or television show). In someimplementations, a portion of the undisplayed video may be stored in amemory, such as a buffer. The memory may be monitored to detect thepresence of the character or personality associated with a receivedpreference. For example, the next five minutes of a movie may beanalyzed to detect whether the character or personality is in thatportion of the movie.

Process 600 includes identifying the character or personality in theundisplayed video (block 606). According to various implementations, thecharacter or personality may be identified using image recognition,voice recognition, or a database index that cross-lists play times withcharacters or personalities. For example, image recognition may be usedon images in an undisplayed channel or in an upcoming portion of avideo. In cases in which the character or personality is in an upcomingportion of a video, the scene or times in which the character orpersonality to appear may also be identified. For example, the nextscene in a playing movie may contain the character Sheriff Bob. In sucha case, the service may identify the scene itself, the play time atwhich the character appears (e.g., at play time 45 m:13 s), or theamount of time until the character will be displayed (e.g., Sheriff Bobwill appear on screen in three minutes).

Process 600 includes providing an alert regarding the character orpersonality (block 608). In various implementations, the alert may begenerated in response to the character or personality in the undisplayedvideo being identified. For example, the next n-number of minutes of aplaying video may be analyzed and an alert generated when the characteror personality is detected. In another example, video from anundisplayed channel may be analyzed and an alert generated when thecharacter or personality is detected. The generated alert may specifywhen the portion of the video containing the character or personalitywill be available to watch. For example, the alert may specify that thecharacter or personality is currently being shown on an undisplayedchannel or from another video source, or that the character will appearin a currently played video in five minutes.

An alert may be of any type of electronic notification. For example, analert may be a pop-up window or icon, an audio tone, a text-basedmessage, a graphic, or combinations thereof. In some implementations,the type of alert generated may be based on a set preference (e.g., auser may set a preference to receive a text message to their mobiledevice when the character or personality is going to be shown). In othercases, a particular type of alert may be set as a default or hard-codedin the video customization service (e.g., the type of alert cannot bechanged by a user). In some implementations, the alert may be configuredto allow a user to select to be redirected to the undisplayed video. Forexample, selection of a pop-up alert on an electronic display may causethe channel to be changed or the current video to be advanced to theportion containing the character or personality. In furtherimplementations, a video may be advanced or a video source may bechanged automatically (e.g., without further input from a user).

Referring to FIG. 7, a detailed block diagram of processing circuit 700is shown, according to various implementations. In general, processingcircuit 700 is configured to provide a video customization service.Processing circuit 700 may be a component of a consumer electronicdevice (e.g., a smart television, a set-top box, a game console, amobile device, a personal computer, etc.) or may be a component ofserver in communication with such a consumer electronic device.

As shown, processing circuit 700 includes processor 702 and memory 704.Processor 702 may be or include one or more microprocessors, anapplication specific integrated circuit (ASIC), a circuit containing oneor more processing components, a group of distributed processingcomponents, circuitry for supporting a microprocessor, or other hardwareconfigured for processing data. Processor 702 is also configured toexecute computer code stored in memory 704 to complete and facilitatethe activities described herein. Memory 704 can be any volatile ornon-volatile computer-readable storage medium capable of storing data orcomputer code relating to the activities described herein. For example,memory 704 is shown to include an image analyzer 714, a buffer editor716, an alert generator 718, and an action analyzer 720, which may beimplemented using computer code (e.g., executable code, object code,source code, script code, machine code, etc.) configured for executionby processor 702. When executed by processor 702, processing circuit 700is configured to complete the activities described herein.

In some implementations, processing circuit 700 may be formed bymultiple electronic devices in communication with one another (e.g.,servers in a data center, a collection of consumer electronic devices, adistributed computing platform, etc.). In such cases, processor 702 mayrepresent the collective processors of the devices and memory 704 mayrepresent the collective storage media for the devices. For example,image analyzer 714 and alert generator 718 may be executed by separatecomputing devices that communicate over a network (e.g., the Internet, awireless network, a local area network, etc.).

Processing circuit 700 also includes communication circuitry forsupporting the execution of the computer code image analyzer 714, buffereditor 716, alert generator 718, and action analyzer 720. For example,processing circuit 700 may include input and output (I/O) circuitry 706to communicate data between processing circuit 700 and other electronicdevices. For example, I/O circuitry 706 may include hardware forcommunicating with other electronic devices via a network, such as alocal area network (LAN) or the Internet. In further implementations,I/O circuitry 706 may communicate data between processing circuit 700and one or more user interface devices. For example, I/O circuitry 706may provide display data to an electronic display or may receive datafrom a touch-screen display, a pointing device, or a keypad. I/Ocircuitry 706 may include hardware configured to communicate datawirelessly or via a hard-wired connection. For example, I/O circuitry706 may include hardware to communicate wirelessly via a WiFi,Bluetooth, cellular, or radio connection. In another example, I/Ocircuitry 706 may include hardware to communicate via a hardwiredconnection to an electronic display (e.g., via an HDMI cable, aninternal serial bus, a USB cable, etc.).

Memory 704 may include preferences 708. Preferences 708 may be receivedby processing circuit 700 via I/O circuitry 706. For example,preferences 708 may be received from a user interface device or a remoteconsumer electronic device (e.g., if processing circuit 700 is part of anetworked server). Generally, preferences 708 may be any preferencesconfigured to control the operation of the video customization serviceprovided by processing circuit 700. For example, preferences 708 maycontrol which characters or personalities are detected by image analyzer714 in a video, the action to be performed by buffer editor 716 whenimage analyzer detects a certain character or personality, whetherbuffer editor 716 is to perform an action locally (e.g., for aparticular show or movie) or globally (e.g., to all videos), the type ofalert generated by alert generator 718, and whether action analyzer 720analyzes a user's interaction with a video, and any other functionsperformed by processing circuit 700.

In some implementations, preferences 708 may be part of a user's profilein the video customization service. For example, preferences 708 may beassociated with a login, screen name, or other identifier for the user.In some implementations, the user may provide information about the useras part of his or her profile, such as the user's characteristics (e.g.,age, gender, etc.). In further implementations, preferences 708 may beassociated with one or more consumer electronic devices. For example,preferences 708 may be associated with a particular set-top box, smarttelevision, etc. The one or more electronic devices may or may not beassociated with a user's profile. In other words, preferences 708 may beuser-specific or device-specific (e.g., preferences that are appliedregardless of the user using the device), in various implementations.

Memory 704 may include a character or personality database 710. In someimplementations, database 710 may include image and/or audio dataassociated with a particular character or personality. For example,database 710 may include one or more images of the character orpersonality that may be used by image analyzer 714 to determine whetherthe character or personality is present in a portion of a video. In somecases, database 710 may be updated periodically with data received viaI/O circuitry 706. For example, database 710 may receive updatedregarding the newest movies, television shows, etc. from an updateserver. In other implementations, database 710 may be a database locatedremotely from processing circuit 700. For example, database 710 may be adatabase of characters and/or personalities available to processingcircuit 700 via the Internet.

In some implementations, database 710 may be configured to allow a userto modify the contents of database 710. For example, database 710 may beconfigured to allow a user to associate a character or personality withan uploaded image, an image available via an image-sharing service(e.g., a social networking service or other online image-sharingservice), an image available on a removable storage disk, etc. In oneexample, assume that a user's mother is going to appear on the eveningnews. The user may create an entry in database 710 for his mother andassociate the entry with an uploaded image of his mother. Image analyzer714 may then compare the uploaded image data to a portion of a video, todetect the presence of the user's mother in the video.

Memory 704 may include video buffer 712. In general, video buffer 712stores at least a portion of one or more videos. A portion of a video invideo buffer 712 may be stored in memory 704 or received via I/Ocircuitry 706. For example, a portion of a video in video buffer 712 mayinclude video data available on a television channel, a cable channel, asatellite channel, a video stream via a computer network, a playbackdevice (e.g., a DVD player, a BluRay player, or the like), a downloadsource, or stored locally in memory 704. The portion of the video may bethe entirety of the video, in some cases. For example, a movie receivedfrom a DVD player may be loaded into video buffer 712 in its entirety.In other cases, only a certain portion of the video may be loaded intovideo buffer 712. For example, video buffer 712 may include ten secondsof video from a cable channel, the next five minutes of a DVD movie, orany other portion of a video.

The one or more videos in video buffer 712 may or may not be provided toan electronic display via I/O circuitry 706. In some cases, a portion ofone video in video buffer 712 may be provided to an electronic display,while a portion of another video is not provided to the display (e.g.,video buffer 712 may include undisplayed video). For example, video fromone channel in video buffer 712 may be provided to the display whilevideo from other channels are not. In another example, a portion of aDVD movie in video buffer 712 may be provided to the electronic display,while portions of streamed video in video buffer 712 are not. In someimplementations, the video data provided to an electronic display may bechanged to another portion of video in video buffer 712 (e.g., bychanging the channel, by selecting a different input source, etc.).

Image analyzer 714 may be configured to use image recognition on aportion of a video in video buffer 712. According to variousimplementations, image analyzer 714 may compare image data in database710 to the portion of the video in video buffer 712, to identify acharacter or personality in the portion of the video. For example, imageanalyzer 714 may compare a facial area of a character or personality ina portion of a video to facial data stored in database 710. In someimplementations, which characters or personalities are detected by imageanalyzer 714 may be controlled by preferences 708. For example, a usermay create an entry in preferences 708 that specifies that imageanalyzer 714 is to detect the presence of a particular actor in thevideo data stored in video buffer 712. Image analyzer 714 may alsogenerate timing data regarding a detected character or personality. Forexample, image analyzer 714 may determine the playback times in a videoin which the character or personality appear.

Buffer editor 716 may receive an indication of a detected character orpersonality from image analyzer 714. For example, buffer editor 716 mayreceive an indication from image analyzer 714 that a particularcharacter or personality is present in the video data currently beingprovided to the electronic display. In another example, buffer editor716 may receive an indication from image analyzer 714 that a particularcharacter or personality is present in undisplayed video data in videobuffer 712.

Buffer editor 716 may be configured to perform any number of actions onthe video data in video buffer 712. In various implementations, buffereditor 716 may perform an action in response to receiving an indicationthat a particular character or personality has been detected by imageanalyzer 714. Non-limiting actions performed by buffer editor 716 mayinclude muting audio associated with the video being provided to adisplay, fast-forwarding a portion of video that contains the characteror personality, skipping over a portion of video that contains thecharacter or personality (e.g., by not providing the portion of video tothe display), skipping to a portion of video that contains the characteror personality, and changing the provided video data to video data fromanother source (e.g., from another channel, from another input device,from another video streaming service, etc.). Preferences 708 may be usedto control which action, if any, is performed by buffer editor 716. Forexample, buffer editor 716 may change the channel whenever a particularactor is detected on the current channel and skip over scenes of a moviethat contain another actor.

Memory 704 may include alert generator 718 configured to generate analert and provide the alert via I/O circuitry 706. Similar to buffereditor 716, alert generator 718 may receive an indication of a detectedcharacter or personality from image analyzer 714. In response, alertgenerator 718 may generate and provide an alert as a pop-up icon orscreen to an electronic display, a text message to a mobile device, anaudible alert to a speaker, or any other type of alert that notifies auser that the character or personality has been detected. The type ofalert may be controlled by preferences 708, in some implementations. Forexample, a user may set a preference in preferences 708 to be presentedwith a pop-up notification generated by alert generator 718 whenever aparticular actor appears on an undisplayed channel. In someimplementations, alert generator 718 may generate and provide an indexof when the character or actor appears in a video. For example, alertgenerator 718 may provide an index screen to a display that lists all ofthe appearances of a particular character or actor in a movie.

In some implementations, an alert generated by alert generator 718 maybe associated with an action performable by buffer editor 716. Forexample, a pop-up alert provided to a display by alert generator 718 maynotify a user that a particular character or actor is appearing onanother channel and include an option to be redirected to that channel.In response to receiving input from a user interface device (e.g., viaselection of a pop-up alert, an icon, a button of a remote control,etc.), buffer editor 716 may perform the corresponding action. Forexample, an alert from alert generator 718 may notify a user that acharacter will be shown in a movie in five minutes and include an optionto advance the movie to this playback time.

Memory 704 may include action analyzer 720 configured to analyze auser's interactions with video provided by processing circuit 700 to adisplay. In general, action analyzer 720 may be configured to determinea user's disposition towards a particular character or personality thatappears in a displayed video. In some implementations, action analyzer720 may receive an indication from image analyzer 714 that the characteror personality has been detected in the video data being provided byprocessing circuit 700 to an electronic display. Action analyzer 720 maythen associate any detected interactions with the video with thecharacter or personality. For example, action analyzer 720 may determinethat a user has changed the channel, fast-forwarded the video, skippedto another scene in the video, muted the audio, or performed other suchactions. Action analyzer 720 may analyze a user's interactions withvideos automatically or based in part on one or more preferences inpreferences 708. For example, a user may set a preference in preferences708 to turn on the learning features of action analyzer 720.

Action analyzer 720 may use detected actions associated with a characteror personality to generate a preference in preferences 708. For example,if a user always changes the channel whenever a particular politicalpundit appears on screen, action analyzer 720 may set a preference inpreferences 708 to automatically change the channel whenever the punditappears on screen. In some implementations, action analyzer 720 mayignore certain actions based on when the actions were performed. Forexample, action analyzer 720 may ignore actions performed after thevideo data is presented for a threshold amount of time (e.g., actionanalyzer 720 may ignore actions performed after a television channel isshown for more than one hour). Similarly, action analyzer 720 may ignoreactions performed within the first n-number of seconds of a video. Insome implementations, action analyzer 720 may emphasize or deemphasizean action based on its frequency in relation to other performed actions.For example, action analyzer 720 may ignore a changed channel, if theuser changes multiple channels within a short amount of time (e.g., theuser is channel surfing). In another example, a user skipping a scene ina movie may be emphasized, if the user never skips movie scenes.

According to some implementations, action analyzer 720 may suggest apreference to a user, prior to setting a preference in preferences 708.For example, action analyzer 720 may provide a notification to anelectronic display that suggests a preference to a user (e.g., apreference that causes processing circuit 700 to change the channelautomatically whenever a particular character or personality appears onscreen). In some cases, the notification may include an option to setthe preference. If the user selects the option, action analyzer 720 mayset the preference. In other cases, the notification may simply be anotification and the user may opt to set the suggested preferencemanually.

Implementations of the subject matter and the operations described inthis specification can be implemented in digital electronic circuitry,or in computer software embodied on a tangible medium, firmware, orhardware, including the structures disclosed in this specification andtheir structural equivalents, or in combinations of one or more of them.Implementations of the subject matter described in this specificationcan be implemented as one or more computer programs, i.e., one or moremodules of computer program instructions, encoded on one or morecomputer storage medium for execution by, or to control the operationof, data processing apparatus. Alternatively or in addition, the programinstructions can be encoded on an artificially-generated propagatedsignal, e.g., a machine-generated electrical, optical, orelectromagnetic signal, that is generated to encode information fortransmission to suitable receiver apparatus for execution by a dataprocessing apparatus. A computer storage medium can be, or be includedin, a computer-readable storage device, a computer-readable storagesubstrate, a random or serial access memory array or device, or acombination of one or more of them. Moreover, while a computer storagemedium is not a propagated signal, a computer storage medium can be asource or destination of computer program instructions encoded in anartificially-generated propagated signal. The computer storage mediumcan also be, or be included in, one or more separate components or media(e.g., multiple CDs, disks, or other storage devices). Accordingly, thecomputer storage medium may be tangible and non-transitory.

The operations described in this specification can be implemented asoperations performed by a data processing apparatus on data stored onone or more computer-readable storage devices or received from othersources.

The term “client or “server” include all kinds of apparatus, devices,and machines for processing data, including by way of example aprogrammable processor, a computer, a system on a chip, or multipleones, or combinations, of the foregoing. The apparatus can includespecial purpose logic circuitry, e.g., an FPGA (field programmable gatearray) or an ASIC (application-specific integrated circuit). Theapparatus can also include, in addition to hardware, code that createsan execution environment for the computer program in question, e.g.,code that constitutes processor firmware, a protocol stack, a databasemanagement system, an operating system, a cross-platform runtimeenvironment, a virtual machine, or a combination of one or more of them.The apparatus and execution environment can realize various differentcomputing model infrastructures, such as web services, distributedcomputing and grid computing infrastructures.

A computer program (also known as a program, software, softwareapplication, script, or code) can be written in any form of programminglanguage, including compiled or interpreted languages, declarative orprocedural languages, and it can be deployed in any form, including as astand-alone program or as a module, component, subroutine, object, orother unit suitable for use in a computing environment. A computerprogram may, but need not, correspond to a file in a file system. Aprogram can be stored in a portion of a file that holds other programsor data (e.g., one or more scripts stored in a markup languagedocument), in a single file dedicated to the program in question, or inmultiple coordinated files (e.g., files that store one or more modules,sub-programs, or portions of code). A computer program can be deployedto be executed on one computer or on multiple computers that are locatedat one site or distributed across multiple sites and interconnected by acommunication network.

The processes and logic flows described in this specification can beperformed by one or more programmable processors executing one or morecomputer programs to perform actions by operating on input data andgenerating output. The processes and logic flows can also be performedby, and apparatus can also be implemented as, special purpose logiccircuitry, e.g., an FPGA (field programmable gate array) or an ASIC(application specific integrated circuit).

Processors suitable for the execution of a computer program include, byway of example, both general and special purpose microprocessors, andany one or more processors of any kind of digital computer. Generally, aprocessor will receive instructions and data from a read-only memory ora random access memory or both. The essential elements of a computer area processor for performing actions in accordance with instructions andone or more memory devices for storing instructions and data. Generally,a computer will also include, or be operatively coupled to receive datafrom or transfer data to, or both, one or more mass storage devices forstoring data, e.g., magnetic, magneto-optical disks, or optical disks.However, a computer need not have such devices. Moreover, a computer canbe embedded in another device, e.g., a mobile telephone, a personaldigital assistant (PDA), a mobile audio or video player, a game console,a Global Positioning System (GPS) receiver, or a portable storage device(e.g., a universal serial bus (USB) flash drive), to name just a few.Devices suitable for storing computer program instructions and datainclude all forms of non-volatile memory, media and memory devices,including by way of example semiconductor memory devices, e.g., EPROM,EEPROM, and flash memory devices; magnetic disks, e.g., internal harddisks or removable disks; magneto-optical disks; and CD-ROM and DVD-ROMdisks. The processor and the memory can be supplemented by, orincorporated in, special purpose logic circuitry.

To provide for interaction with a user, implementations of the subjectmatter described in this specification can be implemented on a computerhaving a display device, e.g., a CRT (cathode ray tube), LCD (liquidcrystal display), OLED (organic light emitting diode), TFT (thin-filmtransistor), plasma, other flexible configuration, or any other monitorfor displaying information to the user and a keyboard, a pointingdevice, e.g., a mouse, trackball, etc., or a touch screen, touch pad,etc., by which the user can provide input to the computer. Other kindsof devices can be used to provide for interaction with a user as well;for example, feedback provided to the user can be any form of sensoryfeedback, e.g., visual feedback, auditory feedback, or tactile feedback;and input from the user can be received in any form, including acoustic,speech, or tactile input. In addition, a computer can interact with auser by sending documents to and receiving documents from a device thatis used by the user; for example, by sending web pages to a web browseron a user's client device in response to requests received from the webbrowser.

Implementations of the subject matter described in this specificationcan be implemented in a computing system that includes a back-endcomponent, e.g., as a data server, or that includes a middlewarecomponent, e.g., an application server, or that includes a front-endcomponent, e.g., a client computer having a graphical user interface ora Web browser through which a user can interact with an implementationof the subject matter described in this specification, or anycombination of one or more such back-end, middleware, or front-endcomponents. The components of the system can be interconnected by anyform or medium of digital data communication, e.g., a communicationnetwork. Examples of communication networks include a local area network(“LAN”) and a wide area network (“WAN”), an inter-network (e.g., theInternet), and peer-to-peer networks (e.g., ad hoc peer-to-peernetworks).

While this specification contains many specific implementation details,these should not be construed as limitations on the scope of anyinventions or of what may be claimed, but rather as descriptions offeatures specific to particular implementations of particularinventions. Certain features that are described in this specification inthe context of separate implementations can also be implemented incombination in a single implementation. Conversely, various featuresthat are described in the context of a single implementation can also beimplemented in multiple implementations separately or in any suitablesubcombination. Moreover, although features may be described above asacting in certain combinations and even initially claimed as such, oneor more features from a claimed combination can in some cases be excisedfrom the combination, and the claimed combination may be directed to asubcombination or variation of a sub combination.

Similarly, while operations are depicted in the drawings in a particularorder, this should not be understood as requiring that such operationsbe performed in the particular order shown or in sequential order, orthat all illustrated operations be performed, to achieve desirableresults. In certain circumstances, multitasking and parallel processingmay be advantageous. Moreover, the separation of various systemcomponents in the implementations described above should not beunderstood as requiring such separation in all implementations, and itshould be understood that the described program components and systemscan generally be integrated together in a single software productembodied on a tangible medium or packaged into multiple such softwareproducts.

Thus, particular implementations of the subject matter have beendescribed. Other implementations are within the scope of the followingclaims. In some cases, the actions recited in the claims can beperformed in a different order and still achieve desirable results. Inaddition, the processes depicted in the accompanying figures do notnecessarily require the particular order shown, or sequential order, toachieve desirable results. In certain implementations, multitasking andparallel processing may be advantageous.

What is claimed is:
 1. A method for providing an alert, comprising:causing a first portion of video to be presented on a display;generating user preferences by: determining a character of interest to aviewer identified in the first portion of video based at least in parton a user playback action of a plurality of user playback actions thatis received on a user device associated with the display duringpresentation of the character; providing a plurality of availableactions in association with the character of interest; determining anaction to be performed that is selected from the provided plurality ofavailable actions in association with the character of interest based onthe user playback action, wherein the action includes causing an alertto be presented; and associating the character of interest with theaction from the plurality of available actions: identifying, using ahardware processor, the character in a second portion of video while thefirst portion of video is being presented using facial recognition,wherein the second portion of video is stored in a buffer associatedwith the display; and causing the alert to be presented, wherein thealert at least identifies the character.
 2. A system for providing analert, the system comprising: a hardware processor and a memory, whereinthe memory stores instructions which, when executed by the processor,cause the processor to: cause a first portion of video to be presentedon a display; generate user preferences by: determining a character ofinterest to a viewer identified in the first portion of video based atleast in part on a user playback action of a plurality of user playbackactions that is received on a user device associated with the displayduring presentation of the character; providing a plurality of availableactions in association with the character of interest; determining anaction to be performed that is selected from the provided plurality ofavailable actions in association with the character of interest based onthe user playback action, wherein the action includes causing an alertto be presented; and associating the character of interest with theaction from the plurality of available actions: identify the characterin a second portion of video while the first portion of video is beingpresented using facial recognition, wherein the second portion of videois stored in a buffer associated with the display; and cause the alertto be presented, wherein the alert at least identifies the character. 3.A non-transitory computer-readable medium containing computer executableinstructions that, when executed by a processor, cause the processor toperform a method for providing an alert, the method comprising: causinga first portion of video to be presented on a display; generating userpreferences by: determining a character of interest to a vieweridentified in the first portion of video based at least in part on auser playback action of a plurality of user playback actions that isreceived on a user device associated with the display duringpresentation of the character; providing a plurality of availableactions in association with the character of interest; determining anaction to be performed that is selected from the provided plurality ofavailable actions in association with the character of interest based onthe user playback action, wherein the action includes causing an alertto be presented; and associating the character of interest with theaction from the plurality of available actions: identifying thecharacter in a second portion of video while the first portion of videois being presented using facial recognition, wherein the second portionof video is stored in a buffer associated with the display; and causingthe alert to be presented, wherein the alert at least identifies thecharacter.
 4. A method for providing an alert, comprising: causing afirst portion of video to be presented on a display; generating userpreferences that indicate a character of interest to a viewer identifiedin the first portion of video based at least in part on a user playbackaction received on a user device associated with the display duringpresentation of the character and an action to be performed inassociation with the character of interest, wherein the action includescausing an alert to be presented; identifying, using a hardwareprocessor, the character in a second portion of video while the firstportion of video is being presented using facial recognition, whereinthe second portion of video is stored in a buffer associated with thedisplay; identifying a duration of time until the character is to bepresented in the second portion of video; and causing the alert to bepresented, wherein the alert at least identifies the character and theduration of time.
 5. The method of claim 4, wherein the first portion ofvideo is associated with a first channel, and wherein the second portionof video is associated with a second channel.
 6. The method of claim 5,wherein the alert identifies the channel.
 7. The method of claim 4,further comprising: determining whether the alert has been selected; andin response to determining that the alert has been selected, causing thesecond portion of video to be presented on the display.
 8. The method ofclaim 4, wherein the alert is presented on a user device other than thedisplay.
 9. The method of claim 4, wherein determining the character ofinterest further comprises: identifying a character in a third portionof video, wherein the user-specified playback action is detected duringpresentation of the third portion of video; associating the identifiedcharacter in the third portion of video with the user-specified playbackaction; and in response to detecting the user-specified playback actionin a fourth portion of video that includes the identified character,associating the character of interest with the identified character. 10.The method of claim 9, wherein the user-specified playback action isfast-forwarding the third portion of video.
 11. A system for providingan alert, the system comprising: a hardware processor and a memory,wherein the memory stores instructions which, when executed by theprocessor, cause the processor to: cause a first portion of video to bepresented on a display; generate user preferences that indicate acharacter of interest to a viewer identified in the first portion ofvideo based at least in part on a user playback action received on auser device associated with the display during presentation of thecharacter and an action to be performed in association with thecharacter of interest, wherein the action includes causing an alert tobe presented; identify the character in a second portion of video whilethe first portion of video is being presented using facial recognition,wherein the second portion of video is stored in a buffer associatedwith the display; identify a duration of time until the character is tobe presented in the second portion of video; and cause the alert to bepresented, wherein the alert at least identifies the character and theduration of time.
 12. The system of claim 11, wherein the first portionof video is associated with a first channel, and wherein the secondportion of video is associated with a second channel.
 13. The system ofclaim 12, wherein the alert identifies the channel.
 14. The system ofclaim 11, wherein the hardware processor is further programmed to:determine whether the alert has been selected; and in response todetermining that the alert has been selected, cause the second portionof video to be presented on the display.
 15. The system of claim 11,wherein the alert is presented on a user device other than the display.16. The system of claim 11, wherein the hardware processor is furtherprogrammed to: identify a character in a third portion of video, whereinthe user-specified playback action is detected during presentation ofthe third portion of video; associate the identified character in thethird portion of video with the user-specified playback action; and inresponse to detecting the user-specified playback action in a fourthportion of video that includes the identified character, associate thecharacter of interest with the identified character.
 17. The system ofclaim 16, wherein the user-specified playback action is fast-forwardingthe third portion of video.
 18. A non-transitory computer-readablemedium containing computer executable instructions that, when executedby a processor, cause the processor to perform a method for providing analert, the method comprising: causing a first portion of video to bepresented on a display; generating user preferences that indicate acharacter of interest to a viewer identified in the first portion ofvideo based at least in part on a user playback action received on auser device associated with the display during presentation of thecharacter and an action to be performed in association with thecharacter of interest, wherein the action includes causing an alert tobe presented; identifying the character in a second portion of videowhile the first portion of video is being presented using facialrecognition, wherein the second portion of video is stored in a bufferassociated with the display; identifying a duration of time until thecharacter is to be presented in the second portion of video; and causingthe alert to be presented, wherein the alert at least identifies thecharacter and the duration of time.
 19. The non-transitorycomputer-readable medium of claim 18, wherein the first portion of videois associated with a first channel, and wherein the second portion ofvideo is associated with a second channel.
 20. The non-transitorycomputer-readable medium of claim 19, wherein the alert identifies thechannel.
 21. The non-transitory computer-readable medium of claim 18,wherein the method further comprises: determining whether the alert hasbeen selected; and in response to determining that the alert has beenselected, causing the second portion of video to be presented on thedisplay.
 22. The non-transitory computer-readable medium of claim 18,wherein the alert is presented on a user device other than the display.23. The non-transitory computer-readable medium of claim 18, whereindetermining the character of interest further comprises: identifying acharacter in a third portion of video, wherein the user-specifiedplayback action is detected during presentation of the third portion ofvideo; associating the identified character in the third portion ofvideo with the user-specified playback action; and in response todetecting the user-specified playback action in a fourth portion ofvideo that includes the identified character, associating the characterof interest with the identified character.
 24. The non-transitorycomputer-readable medium of claim 23, wherein the user-specifiedplayback action is fast-forwarding the third portion of video.